﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;
using CG67.EspaceRencontre.Outils;

namespace CG67.EspaceRencontre.AccesDonnees
{
    public class EnfantDB
    {
        #region Attributs
        /// <summary>
        /// chaine de connexion figurant dans Web.config
        /// </summary>
        private static ConnectionStringSettings connexionString = ConfigurationManager.ConnectionStrings["connexionEspaceRencontre"];
        #endregion

        #region GetAllEnfants
        /// <summary>
        /// récupère la liste de tous les enfants actifs
        /// </summary>
        /// <returns>DataSet</returns>
        public static DataSet GetAllEnfants()
        {
            String query = "SELECT * FROM ENFANT WHERE ACTIF='true' ORDER By NOM";
            DataSet res = BaseDeDonnee.BuildDataSet(query, connexionString);
            return res;
        }
        #endregion

        #region GetAllEnfantsInactifs
        /// <summary>
        /// recupère la liste de tous les enfants inactifs
        /// </summary>
        /// <returns>DataSet</returns>
        public static DataSet GetAllEnfantsInactifs()
        {
            String query = "SELECT * FROM ENFANT WHERE ACTIF='false'";
            DataSet res = BaseDeDonnee.BuildDataSet(query, connexionString);
            return res;
        }
        #endregion

        #region GetEnfantById
        /// <summary>
        /// récupère les informations d'un enfant identifié par son id
        /// </summary>
        /// <param name="id"><c>int</c> : identifiant de l'enfant</param>
        /// <returns>DataSet</returns>
        public static DataSet GetEnfantById(int id)
        {
            String query = "SELECT * FROM ENFANT WHERE ID='" + id + "'";
            DataSet res = BaseDeDonnee.BuildDataSet(query, connexionString);
            return res;
        }
        #endregion

        #region GetEnfantsByRendezVousId
        /// <summary>
        /// récupère la liste des enfants pour un rendez-vous identifié par son id
        /// </summary>
        /// <param name="id"><c>int</c> : identifiant du rendez-vous</param>
        /// <returns>DataSet</returns>
        public static DataSet GetEnfantsByRendezVousId(int id)
        {
            String query = "SELECT e.* FROM [RENDEZVOUS_ENFANT] r inner join [ENFANT] e on e.ID = r.IDENFANT WHERE r.IDRENDEZVOUS='" + id + "'";
            DataSet res = BaseDeDonnee.BuildDataSet(query, connexionString);
            return res;
        }
        #endregion

        #region UpdateEnfant
        /// <summary>
        /// màj des informations d'un enfant
        /// </summary>
        /// <param name="id"><c>int</c> : identifiant de l'enfant</param>
        /// <param name="nom"><c>String</c> : nom de l'enfant</param>
        /// <param name="prenom"><c>String</c> : prénom de l'enfant</param>
        /// <param name="dateNaissance"><c>DateTime</c> : date de naissance de l'enfant</param>
        public static void UpdateEnfant(int id, String nom, String prenom, DateTime dateNaissance)
        {
            BaseDeDonnee.ExecuteNonQuery("UPDATE ENFANT SET [NOM]='" + nom + "', [PRENOM]='" + prenom + "', [DATENAISSANCE]='" + dateNaissance + "' WHERE ID='" + id + "'", connexionString);
        }
        #endregion

        #region ReactivateEnfant
        /// <summary>
        /// rend un enfant à nouveau visible
        /// </summary>
        /// <param name="id">Numéro d'identifiant de l'enfant</param>
        public static void ReactivateEnfant(int id)
        {
            BaseDeDonnee.ExecuteNonQuery("UPDATE ENFANT SET [ACTIF] = 'true' WHERE ID='" + id + "'", connexionString);
        }
        #endregion

        #region CreateEnfant
        /// <summary>
        /// ajoute un nouvel enfant dans la BDD
        /// </summary>
        /// <param name="nom"><c>String</c> : nom de l'enfant</param>
        /// <param name="prenom"><c>String</c> : prénom de l'enfant</param>
        /// <param name="dateNaissance"><c>DateTime</c> : date de naissance de l'enfant</param>
        public static void CreateEnfant(String nom, String prenom, DateTime dateNaissance)
        {
            BaseDeDonnee.ExecuteNonQuery("INSERT INTO ENFANT([NOM], [PRENOM], [DATENAISSANCE]) VALUES('" + nom + "', '" + prenom + "', '" + dateNaissance + "')", connexionString);
        }
        #endregion

        #region DeleteEnfant
        /// <summary>
        /// rend un enfant inactif
        /// </summary>
        /// <param name="id">identifiant de l'enfant</param>
        public static void DeleteEnfant(int id)
        {
            BaseDeDonnee.ExecuteNonQuery("UPDATE ENFANT SET [ACTIF]='false' WHERE ID='" + id + "'", connexionString);
        }
        #endregion
    }
}
